#pragma once

class Time;
class InputManager;
class SoundManager;
class StateManager;
class Renderer;

class Game
{
public:
	Game();
	~Game();

	void Initialize(HWND hWnd, unsigned short windowWidth, unsigned short windowHeight, bool isWindowed);
	bool GameLoop(void);
	void Shutdown(void);

	StateManager * GetStateManager(void) { return stateManager; }
	InputManager * GetInputManager(void) { return inputManager; }
	SoundManager * GetSoundManager(void) { return soundManager; }
	Renderer * GetRenderer(void) { return renderer; }

private:
	HWND hWnd;
	unsigned short windowWidth;
	unsigned short windowHeight;
	bool isWindowed;

	Time * time;
	InputManager * inputManager;
	SoundManager * soundManager;
	StateManager * stateManager;
	Renderer * renderer;
};

